package marseillaisdu90.modele;

import java.util.ArrayList;

/**
 * Classe qui, comme son nom l'indique, est l'inventaire que le joueur possède
 * Elle possède donc une liste d'objets
 * @author guillaume
 *
 */
public class Inventaire {

	private int poids_max;
	protected ArrayList<Objet> lo;
	
	/**
	 * Initialise l'inventaire en fonction de son poids maximum.
	 * @param poids_max poids maximal que peut contenir l'inventaire
	 */
	public Inventaire(int poids_max) {
		
		this.poids_max=poids_max;
		lo=new ArrayList<Objet>();
	}
	
	/**
	 * Ajoute un objet à l'inventaire.
	 * @param objet Objet que l'on veut ajouter
	 */
	public void ajouterObjet(Objet objet) {
		
		lo.add(objet);
		
	}
	
	/**
	 * Retourne un objet grace à son indexe.
	 * @param index indexe de l'objet choisi
	 * @return L'Objet choisi
	 */
	public Objet getObjet(int index) {

		return lo.get(index);
		
	}
	
	/**
	 * Supprime un objet de la liste lo grace à son nom.
	 * @param nom_obj nom de l'objet que l'on souhaite supprimer
	 */
	public void supprimerObjet(String nom_obj) {
		
		int index_courant=0;
		int index=0;
		if(verifExistance(nom_obj)==true) {
			for(Objet o: lo) {
				if(o.getNomObj()==nom_obj)
					index_courant=index;
				index++;
			}
		
			lo.remove(index_courant);
		}
	}
	
	/**
	 * Supprime un objet de la liste lo grace à son indexe
	 * @param index indexe de l'objet que l'on souhaite supprimer
	 */
	public void supprimerObjet(int index) {
		
		lo.remove(index);
		
	}
	
	/**
	 * Vide l'inventaire
	 * 
	 */
	public void viderInventaire() {
		
		lo.clear();	
		
	}
	
	/**
	 * On vérifie si un objet existe déjà dans l'inventaire
	 * @param nom_obj nom de l'objet
	 * @return true si il existe déjà
	 */
	public boolean verifExistance(String nom_obj) {
		
		boolean existe=false;
		for(Objet o: lo) {
			if(o.getNomObj()==nom_obj)
				existe=true;
		}
		
		return existe;
		
	}

	/**
	 * Permet de connaitre le nombre d'objets présents dans l'inventaire
	 * @return le nombre d'objets présents dans l'inventaire
	 */
	public int nbObjet() {
		
		return lo.size();
	}

	/**
	 * Permet de savoir si l'inventaire est rempli
	 * @return true si l'inventaire est rempli
	 */
	public boolean estRempli() {
		
		int poids_courant=0;
		for(Objet o: lo)
			poids_courant=poids_courant+o.getPoidsObj();
			
		if(poids_courant>=poids_max)
			return true;
		else
			return false;
		
	}
	
	
}
